package cn.easy.kitchen.utils;

import cn.easy.base.utils.BaseUtils;
import cn.easy.base.utils.DateTimeUtil;
import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class ProjectUtil {

    public static BigDecimal getBigDecimalVal(String col) {
        return StringUtils.isNoneBlank(col) ? new BigDecimal(col.replaceAll("[ ]+", "")) : BigDecimal.ZERO;
    }

    public static BigDecimal getBigDecimalVal(Object object) {
        return object == null ?  BigDecimal.ZERO : new BigDecimal(object.toString());
    }

    public static BigDecimal getBigDecimalVal(Map<String, Object> map, String key) {
        if (!map.containsKey(key)) {
            return null;
        }
        Object col = map.get(key);
        return col == null ? BigDecimal.ZERO : new BigDecimal(col.toString());
    }

    public static Date getDateVal(Map<String, Object> map, String key) {
        if (!map.containsKey(key)) {
            return null;
        }
        Object col = map.get(key);
        return col != null ? DateTimeUtil.parse(col.toString(), "yyyy-MM-dd") : null;
    }

    public static String cutStrLength(String str, int len) {
        if(StringUtils.isBlank(str)) {
            return str;
        }
        if (str.length() > len) {
            return str.substring(0, len) + "…";
        }
        return str;
    }

    /**
     * 微量元素
     * 18种已确认与人体健康和生命有关的必需微量元素,直接写死
     * @return
     */
    public static Map<String, String> getTraceElementMap() {
        Map<String, String> traceElementMap = new HashMap<>();
        //18种已确认与人体健康和生命有关的必需微量元素,直接写死
        String traceElementStr = "铁、铜、锌、钴、锰、铬、硒、碘、镍、氟、钼、钒、锡、硅、锶、硼、铷、砷";
        for (String str : traceElementStr.split("、")) {
            traceElementMap.put(str, str);
        }
        return traceElementMap;
    }

    /**
     * map 中的值判断
     *
     * @param searchParams
     * @param key
     * @return
     */
    public static boolean isValidParam(Map<String, Object> searchParams, String key) {
        return BaseUtils.isNotBlank(searchParams, key);
    }

    public static String formatDate(Object date) {
        return DateTimeUtil.getFormatDate((Date) date, "yyyy-MM-dd HH:mm:ss");
    }
}
